package com.kuangstudy.controller.list;//package com.kuangstudy.controller.list;
//
//import com.kuangstudy.entity.Product;
//import com.kuangstudy.service.list.ProductListService;
//import com.kuangstudy.vo.R;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.List;
//
///**
// * @author 飞哥
// * @Title: 学相伴出品
// * @Description: 我们有一个学习网站：https://www.kuangstudy.com
// * @date 2021/5/25 17:12
// */
//@RestController
//public class RedPackageController {
//
//    @Autowired
//    private RedisTemplate redisTemplate;
//
//    @Autowired
//    private ProductListService productListService;
//
//    /**
//     * 查询产品信息
//     *
//     * @param pageNo
//     * @param pageSize
//     * @return
//     */
//    @GetMapping("/findproducts")
//    public R findProducts(int pageNo, int pageSize) {
//        // 1: 计算分页的起始页
//        int start = (pageNo - 1) * pageSize;
//        // 2：计算分页的结束页
//        int end = start + pageSize - 1;
//        try {
//            // 3: 查询列表中对应的产品信息进行返回
//            List<Product> productList = this.redisTemplate.opsForList().range("product:list", start, end);
//            // 4: 如果缓存查询不到就去数据库查询
//            if (CollectionUtils.isEmpty(productList)) {
//                //todo: 查询数据库，存在缓存击穿的情况，大量的并发请求进来，可能把数据库冲
//                productList = productListService.findProductsDB();
//            }
//            // 5: 查询产品集合
//            return R.ok().data("products", productList);
//        } catch (Exception ex) {
//            //todo: 查询数据库，存在缓存击穿的情况，大量的并发请求进来，可能把数据库冲
//            return R.error().message("服务器忙!!!");
//        }
//    }
//
//    /**
//     * 查询产品信息
//     *
//     * @param pageNo
//     * @param pageSize
//     * @return
//     */
//    @GetMapping("/findproducts/masterslave")
//    public R findProductsmasterslave(int pageNo, int pageSize) {
//        // 1: 计算分页的起始页
//        int start = (pageNo - 1) * pageSize;
//        // 2：计算分页的结束页
//        int end = start + pageSize - 1;
//        try {
//            // 3: 查询列表中对应的产品信息进行返回
//            List<Product> productList = this.redisTemplate.opsForList().range("product:list:master", start, end);
//            // 4: 如果缓存查询不到就去数据库查询
//            if (CollectionUtils.isEmpty(productList)) {
//                // todo 存在缓存击穿的情况，就查询缓存B的数据
//                productList = this.redisTemplate.opsForList().range("product:list:slave", start, end);
//            }
//            // 5: 查询产品集合
//            return R.ok().data("products", productList);
//        } catch (Exception ex) {
//            //todo: 查询数据库，存在缓存击穿的情况，大量的并发请求进来，可能把数据库冲
//            return R.error().message("服务器忙!!!");
//        }
//    }
//}
